package demo1;

import org.junit.Test;
import sun.awt.PeerEvent;

import java.util.ArrayList;
import java.util.List;

/**
 * @description:实例化自定义泛型类Order
 * @author:Mr.Cat
 * @create:2021-11-01 21:54
 **/
public class OrderTest1 {
    @Test
    public void test1() {
        //如果定义了泛型类，实例化没有指明类的泛型，则认为此泛型类型为Object类型
        //要求：如果大家定义了类是带泛型的，建议在实例化是要指明类的泛型
        Order order = new Order();
        order.setOrderT(123);
        order.setOrderT("SCA");

        //建议:实例化时指明类的泛型
        Order<String> order1 = new Order<String>("AA", 1001, "发士大夫");
        order1.setOrderT("专升本！！！");
    }

    @Test
    public void test2() {
        SubOrder sub1 = new SubOrder();
        //有用子类在继承带泛型的父类时，指明了泛型类型。则实例化子类对象时，不再需要指明泛型
        sub1.setOrderT(132);

        SubOrder1<String> sub2 = new SubOrder1<>();
        sub2.setOrderT("order2...");
        System.out.println(sub1.getOrderT());
    }

    @Test
    public void test3(){

        ArrayList<String> list1 = null;
        ArrayList<Integer> list2 =null;
        //泛型不同的引用不能相互赋值。
        //list1=list2

        Person p1 = null;
        Person p2 = null;
        p1=p2;
    }

    //测试泛型方法
    @Test
    public void test4(){
        Order<String> order = new Order<>();
        Integer[] arr = new Integer[]{};
        //泛型方法的调用,指明泛型参数的类型
        List<Integer> list= order.copyFromArrayToList(arr);

        System.out.println(list);
    }
}

